
package com.yuan.model;

import com.yuan.prefence.FileConstants;
import com.yuan.prefence.UrlConstants;
import com.yuan.unit.FileUtils;
import com.yuan.unit.HttpUtils;
import com.yuan.unit.JsonUtils;

import android.content.Context;
import android.text.TextUtils;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

/**
 * 员工信息表 entity. @author MyEclipse Persistence Tools
 */
@SuppressWarnings("serial")
public class M员工信息表 implements java.io.Serializable {

    private Integer 序号;
    private String 姓名;
    private String 性别;
    private String 民族;
    private String 政治面貌;
    private String 身份证号码;
    private String 出生日期;
    private String 系统出生日期;
    private String 工作时间;
    private String 工种岗位;
    private String 技能鉴定工种;
    private String 职称;
    private String 工资表职称;
    private String 取证日期;
    private String 用工性质;
    private String 学历;
    private String 毕业时间;
    private String 所学专业;
    private String 学历类型;
    private String 毕业院校;
    private String 籍贯;
    private String 所属队室;
    private String 目前岗位;
    private String 住址;
    private String 血型;
    private String 婚姻状况;
    private String 档案编号;
    private String 社会保险号;
    private String 合同编号;
    private String 企业编号;
    private String 备注;
    private String 学习简历;
    private String 工作简历;
    private String 家庭成员;
    private String 照片;
    private String 电话;

    private static M员工信息表 sInstance;

    public static M员工信息表 getInstance() {
        if (sInstance == null) {
            synchronized (M员工信息表.class) {
                if (sInstance == null) {
                    sInstance = new M员工信息表();
                }
            }
        }
        return sInstance;
    }

    /** default constructor */
    private M员工信息表() {
    }

    /** default constructor */
    public void setFromObject(Object mObject) {
        sInstance = (M员工信息表) mObject;
    }

    public void setFromMap(Map<?, ?> map) {
        try {
            this.序号 = (Integer) map.get("序号");
            this.姓名 = (String) map.get("姓名");
            this.性别 = (String) map.get("性别");
            this.民族 = (String) map.get("民族");
            this.政治面貌 = (String) map.get("政治面貌");
            this.身份证号码 = (String) map.get("身份证号码");
            this.出生日期 = (String) map.get("出生日期");
            this.系统出生日期 = (String) map.get("系统出生日期");
            this.工作时间 = (String) map.get("工作时间");
            this.工种岗位 = (String) map.get("工种岗位");
            this.技能鉴定工种 = (String) map.get("技能鉴定工种");
            this.职称 = (String) map.get("职称");
            this.工资表职称 = (String) map.get("工资表职称");
            this.取证日期 = (String) map.get("取证日期");
            this.用工性质 = (String) map.get("用工性质");
            this.学历 = (String) map.get("学历");
            this.毕业时间 = (String) map.get("毕业时间");
            this.所学专业 = (String) map.get("所学专业");
            this.学历类型 = (String) map.get("学历类型");
            this.毕业院校 = (String) map.get("");
            this.籍贯 = (String) map.get("毕业院校");
            this.所属队室 = (String) map.get("所属队室");
            this.目前岗位 = (String) map.get("目前岗位");
            this.住址 = (String) map.get("住址");
            this.血型 = (String) map.get("血型");
            this.婚姻状况 = (String) map.get("婚姻状况");
            this.档案编号 = (String) map.get("档案编号");
            this.社会保险号 = (String) map.get("社会保险号");
            this.合同编号 = (String) map.get("合同编号");
            this.企业编号 = (String) map.get("企业编号");
            this.备注 = (String) map.get("备注");
            this.学习简历 = (String) map.get("学习简历");
            this.工作简历 = (String) map.get("工作简历");
            this.家庭成员 = (String) map.get("家庭成员");
            this.照片 = String.format(UrlConstants.LOCALIMAGE_PATH_BASE, (String) map.get("照片"));
            this.电话 = (String) map.get("电话");
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    // Property accessors

    public Integer get序号() {
        return this.序号;
    }

    public void set序号(Integer 序号) {
        this.序号 = 序号;
    }

    public String get姓名() {
        return this.姓名;
    }

    public void set姓名(String 姓名) {
        this.姓名 = 姓名;
    }

    public String get性别() {
        return this.性别;
    }

    public void set性别(String 性别) {
        this.性别 = 性别;
    }

    public String get民族() {
        return this.民族;
    }

    public void set民族(String 民族) {
        this.民族 = 民族;
    }

    public String get政治面貌() {
        return this.政治面貌;
    }

    public void set政治面貌(String 政治面貌) {
        this.政治面貌 = 政治面貌;
    }

    public String get身份证号码() {
        return this.身份证号码;
    }

    public void set身份证号码(String 身份证号码) {
        this.身份证号码 = 身份证号码;
    }

    public String get出生日期() {
        return this.出生日期;
    }

    public void set出生日期(String 出生日期) {
        this.出生日期 = 出生日期;
    }

    public String get系统出生日期() {
        return this.系统出生日期;
    }

    public void set系统出生日期(String 系统出生日期) {
        this.系统出生日期 = 系统出生日期;
    }

    public String get工作时间() {
        return this.工作时间;
    }

    public void set工作时间(String 工作时间) {
        this.工作时间 = 工作时间;
    }

    public String get工种岗位() {
        return this.工种岗位;
    }

    public void set工种岗位(String 工种岗位) {
        this.工种岗位 = 工种岗位;
    }

    public String get技能鉴定工种() {
        return this.技能鉴定工种;
    }

    public void set技能鉴定工种(String 技能鉴定工种) {
        this.技能鉴定工种 = 技能鉴定工种;
    }

    public String get职称() {
        return this.职称;
    }

    public void set职称(String 职称) {
        this.职称 = 职称;
    }

    public String get工资表职称() {
        return this.工资表职称;
    }

    public void set工资表职称(String 工资表职称) {
        this.工资表职称 = 工资表职称;
    }

    public String get取证日期() {
        return this.取证日期;
    }

    public void set取证日期(String 取证日期) {
        this.取证日期 = 取证日期;
    }

    public String get用工性质() {
        return this.用工性质;
    }

    public void set用工性质(String 用工性质) {
        this.用工性质 = 用工性质;
    }

    public String get学历() {
        return this.学历;
    }

    public void set学历(String 学历) {
        this.学历 = 学历;
    }

    public String get毕业时间() {
        return this.毕业时间;
    }

    public void set毕业时间(String 毕业时间) {
        this.毕业时间 = 毕业时间;
    }

    public String get所学专业() {
        return this.所学专业;
    }

    public void set所学专业(String 所学专业) {
        this.所学专业 = 所学专业;
    }

    public String get学历类型() {
        return this.学历类型;
    }

    public void set学历类型(String 学历类型) {
        this.学历类型 = 学历类型;
    }

    public String get毕业院校() {
        return this.毕业院校;
    }

    public void set毕业院校(String 毕业院校) {
        this.毕业院校 = 毕业院校;
    }

    public String get籍贯() {
        return this.籍贯;
    }

    public void set籍贯(String 籍贯) {
        this.籍贯 = 籍贯;
    }

    public String get所属队室() {
        return this.所属队室;
    }

    public void set所属队室(String 所属队室) {
        this.所属队室 = 所属队室;
    }

    public String get目前岗位() {
        return this.目前岗位;
    }

    public void set目前岗位(String 目前岗位) {
        this.目前岗位 = 目前岗位;
    }

    public String get住址() {
        return this.住址;
    }

    public void set住址(String 住址) {
        this.住址 = 住址;
    }

    public String get血型() {
        return this.血型;
    }

    public void set血型(String 血型) {
        this.血型 = 血型;
    }

    public String get婚姻状况() {
        return this.婚姻状况;
    }

    public void set婚姻状况(String 婚姻状况) {
        this.婚姻状况 = 婚姻状况;
    }

    public String get档案编号() {
        return this.档案编号;
    }

    public void set档案编号(String 档案编号) {
        this.档案编号 = 档案编号;
    }

    public String get社会保险号() {
        return this.社会保险号;
    }

    public void set社会保险号(String 社会保险号) {
        this.社会保险号 = 社会保险号;
    }

    public String get合同编号() {
        return this.合同编号;
    }

    public void set合同编号(String 合同编号) {
        this.合同编号 = 合同编号;
    }

    public String get企业编号() {
        return this.企业编号;
    }

    public void set企业编号(String 企业编号) {
        this.企业编号 = 企业编号;
    }

    public String get备注() {
        return this.备注;
    }

    public void set备注(String 备注) {
        this.备注 = 备注;
    }

    public String get学习简历() {
        return this.学习简历;
    }

    public void set学习简历(String 学习简历) {
        this.学习简历 = 学习简历;
    }

    public String get工作简历() {
        return this.工作简历;
    }

    public void set工作简历(String 工作简历) {
        this.工作简历 = 工作简历;
    }

    public String get家庭成员() {
        return this.家庭成员;
    }

    public void set家庭成员(String 家庭成员) {
        this.家庭成员 = 家庭成员;
    }

    public String get照片() {
        return this.照片;
    }

    public void set照片(String 照片) {
        this.照片 = 照片;
    }

    public String get电话() {
        return this.电话;
    }

    public void set电话(String 电话) {
        this.电话 = 电话;
    }

    public boolean getUserInfo(Context mContext)
    {
        String str = null;
        if (TextUtils.isEmpty(电话))
        {
            return false;
        }
        String url = String.format(UrlConstants.GETUSERINFOURL, 电话);
        try {
            str = HttpUtils.getUrlContent(mContext, url, "UTF-8");
            HashMap<?, ?> mHashMap = JsonUtils.getMap0(str);
            setFromMap(mHashMap);
            FileUtils.Serializable2File(this, FileConstants.SERIALIZABLE_员工信息表);
            return true;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

    public boolean uploadPhoto(Context mContext) {
        String end = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        try
        {
            URL url = new URL(String.format(UrlConstants.SETPHOTO, 序号));
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            /* 允许Input、Output，不使用Cache */
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            /* 设置传送的method=POST */
            con.setRequestMethod("POST");
            /* setRequestProperty */
            con.setRequestProperty("Connection", "Keep-Alive");
            con.setRequestProperty("Charset", "UTF-8");
            con.setRequestProperty("Content-Type",
                    "multipart/form-data;boundary=" + boundary);
            /* 设置DataOutputStream */
            DataOutputStream ds =
                    new DataOutputStream(con.getOutputStream());
            ds.writeBytes(twoHyphens + boundary + end);
            ds.writeBytes("Content-Disposition: form-data; " +
                    "name=\"file1\";filename=\"" +
                    +序号 + "" + "\"" + end);
            ds.writeBytes(end);
            /* 取得文件的FileInputStream */
            FileInputStream fStream = new FileInputStream(new File(FileConstants.USER_IMAGE));
            /* 设置每次写入1024bytes */
            int bufferSize = 1024;
            byte[] buffer = new byte[bufferSize];
            int length = -1;
            /* 从文件读取数据至缓冲区 */
            while ((length = fStream.read(buffer)) != -1)
            {
                /* 将资料写入DataOutputStream中 */
                ds.write(buffer, 0, length);
            }
            ds.writeBytes(end);
            ds.writeBytes(twoHyphens + boundary + twoHyphens + end);
            /* close streams */
            fStream.close();
            ds.flush();
            /* 取得Response内容 */
            InputStream is = con.getInputStream();
            int ch;
            StringBuffer b = new StringBuffer();
            while ((ch = is.read()) != -1)
            {
                b.append((char) ch);
            }
            ds.close();
            return true;
        } catch (Exception e)
        {
            e.printStackTrace();
            return false;
        } finally {
            if (FileUtils.isFileExist(FileConstants.USER_IMAGE))
            {
                FileUtils.deleteFile(FileConstants.USER_IMAGE);
            }
        }

    }
}
